/**
 * 格式化工具函数
 */

/**
 * 格式化文件大小
 * @param {string|number} size 
 * @returns {string}
 */
export function formatFileSize(size) {
  if (!size) return '0 B'
  
  const num = typeof size === 'string' ? parseFloat(size) : size
  
  if (isNaN(num)) return size
  
  const units = ['B', 'KB', 'MB', 'GB', 'TB']
  let index = 0
  let fileSize = num
  
  while (fileSize >= 1024 && index < units.length - 1) {
    fileSize /= 1024
    index++
  }
  
  return `${fileSize.toFixed(2)} ${units[index]}`
}

/**
 * 格式化日期时间为 YYYY-MM-DD HH:mm:ss
 * @param {string} dateStr 
 * @returns {string}
 */
export function formatDateTime(dateStr) {
  if (!dateStr) return '-'
  
  try {
    const date = new Date(dateStr)
    
    // 检查日期是否有效
    if (isNaN(date.getTime())) return dateStr
    
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0')
    const day = String(date.getDate()).padStart(2, '0')
    const hours = String(date.getHours()).padStart(2, '0')
    const minutes = String(date.getMinutes()).padStart(2, '0')
    const seconds = String(date.getSeconds()).padStart(2, '0')
    
    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
  } catch (error) {
    return dateStr
  }
}

/**
 * 获取文件类型图标
 * @param {string} extension 
 * @returns {string}
 */
export function getFileIcon(extension) {
  const ext = extension?.toLowerCase()
  
  const iconMap = {
    // 图片
    'jpg': '🖼️',
    'jpeg': '🖼️',
    'png': '🖼️',
    'gif': '🖼️',
    'svg': '🖼️',
    'webp': '🖼️',
    // 视频
    'mp4': '🎬',
    'avi': '🎬',
    'mov': '🎬',
    'wmv': '🎬',
    'flv': '🎬',
    // 音频
    'mp3': '🎵',
    'wav': '🎵',
    'flac': '🎵',
    'm4a': '🎵',
    // 文档
    'doc': '📄',
    'docx': '📄',
    'pdf': '📕',
    'txt': '📝',
    'md': '📝',
    // 表格
    'xls': '📊',
    'xlsx': '📊',
    'csv': '📊',
    // 压缩包
    'zip': '📦',
    'rar': '📦',
    '7z': '📦',
    'tar': '📦',
    'gz': '📦',
    // 代码
    'js': '💻',
    'ts': '💻',
    'jsx': '💻',
    'tsx': '💻',
    'vue': '💻',
    'html': '💻',
    'css': '💻',
    'java': '💻',
    'py': '💻',
    'go': '💻',
    'c': '💻',
    'cpp': '💻'
  }
  
  return iconMap[ext] || '📎'
}

